<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 迭代器是一个具体的对象，这个对象要符合迭代器协议
    // 迭代器是一个对象，类似于一个光标，依次去访问可迭代对象中的成员
    // 就是帮助帮助我们对某个数据结构进行遍历的对象

    // js中迭代器的要求
    // 1.它有一个next()方法
    // 2.next方法中返回一个对象，对象中要有 done属性 取值false/true是否迭代完毕，value属性 其值为具体指/undefine

    function arrCreateIterator(arr) {
      let index = 0
      // 这个iteraror就是迭代器
      let iteraror = {
        next() {
          if (index < arr.length) {
            return { done: false, value: arr[index++] }
          } else {
            return { done: true, value: undefined }
          }
        }
      }
      return iteraror
    }

    let name = ['zhangsan', 'lisi', 'wangwu']
    let num = [1, 2, 3, 4, 5, 6]

    let nameIterator = arrCreateIterator(name)
    let numIterator = arrCreateIterator(num)

    console.log(nameIterator.next());
    console.log(nameIterator.next());
    console.log(nameIterator.next());
    console.log(nameIterator.next());

    console.log(numIterator.next());
    console.log(numIterator.next());
    console.log(numIterator.next());
    console.log(numIterator.next());
    console.log(numIterator.next());
    console.log(numIterator.next());
    console.log(numIterator.next());

  </script>
</body>

</html>